$(function () {
    // 1- 首页渲染
    // 2- 分页 
    // 3- 添加商品

    var currentPage = 1; //当前页 
    var pageSize = 3; // 每页条数 
    // 1- 首页渲染
    // 取数据 + 模板 
    function render() {
        $.ajax({
            type: 'get',
            url: '/product/queryProductDetailList',
            data: {
                page: currentPage,
                pageSize: pageSize
            },
            dataType: 'json',
            success: function (res) {
                console.log(res);
                $('tbody').html(template('tmp', res));
                // 生成分页标签
                setPage(res.total);
            }
        })
    }
    render();

    // 2- 分页 
    // 1- 获取后台数据库数据的总数 , 根据总数算出页码
    // 2- 使用分页插件 生成分页标签 
    // total 数据库数据的总数 
    function setPage(total) {
        // 使用分页插件生成分页 
        $("#paginator").bootstrapPaginator({
            bootstrapMajorVersion: 3,//默认是2，如果是bootstrap3版本，这个参数必填
            currentPage: currentPage,//当前页
            totalPages: Math.ceil(total / pageSize),//总页数     
            onPageClicked: function (event, originalEvent, type, page) {
                //为按钮绑定点击事件 page:当前点击的按钮值
                // 改变当前页取值
                currentPage = page;
                // 重新渲染
                render();
            }
        });
    }

    // 3 填充下拉列表
    // 数据 + 模板 
    $.ajax({
        type: 'get',
        url: '/category/querySecondCategoryPaging',
        data: {
            page: 1,
            pageSize: 100
        },
        dataType: 'json',
        success: function (res) {
            console.log(res);
            // 渲染
            $('.cate-two-list').html(template('tmp-two-list', res));
        }
    })

    // 4-下拉列表选中
    // 给a标签绑定点击事件， 获取a标签的文本，赋值给按钮的文本，
    // 获取a标签id，赋值给隐藏域
    $('.cate-two-list').on('click', 'a', function () {
        // 获取a标签的文本，赋值给按钮的文本，
        $('.cate-span').text($(this).text());
        // 获取a标签id，赋值给隐藏域
        $('#brandId').val($(this).data('id'));
        // 下拉列表选中，恢复下拉列表状态 
        $('.add-form').data('bootstrapValidator').updateStatus('brandId', 'VALID');
    });

    // 5- 图片上传 
    // 1-商品需要3张图片
    // 2-只保留最近上传3张图片
    // 如何记录图片数量和顺序： 用数组

    // 数组的各种方法：
    // 前面： 加： unshift()  删： shift()
    // 后台： 加：push()    删： pop()

    // jq:添加元素各种方法：
    // append();  向盒子的内部的后面追加子元素
    // prepend(); 向盒子的内部的前面添加子元素
    // before();  在盒子外部的前面 添加兄弟元素
    // after();  在盒子外部的后面 添加兄弟元素

    // remove(); 自杀 
    // empty();  清空盒子内部 

    var picArr = []; //记录以及上传的图片 

    $("#file").fileupload({
        dataType: "json",
        //e：事件对象
        //data：图片上传后的对象，通过data.result.picAddr可以获取上传后的图片地址
        done: function (e, data) {
            console.log(data);
            var img = data.result;
            //记录图片信息
            picArr.unshift(img);

            // 图片的预览
            $('.img-box').prepend('<img src="' + img.picAddr + '" alt="" height="70">');

            // 添加完成后判断 图片是否超过3张 
            if (picArr.length > 3) {
                //删除最后一张
                picArr.pop();
                // 图片盒子也要删除最后一个图片 
                $('.img-box img:last-child').remove();
            }

            console.log(picArr);
            // 把选中的图片地址 赋值给隐藏域 （图片必须满3张） 
            if (picArr.length == 3) {
                $('#picArr').val(JSON.stringify(picArr));
                // 2- 图片够3张后， 恢复图片的校验状态 
                $('.add-form').data('bootstrapValidator').updateStatus('picArr', 'VALID');
            }

        }
    });

    // 6- 表单校验
    //使用表单校验插件
    $('.add-form').bootstrapValidator({
        //1. 指定不校验的类型，默认为[':disabled', ':hidden', ':not(:visible)'],可以不设置
        excluded: [':disabled'],

        //2. 指定校验时的图标显示，默认是bootstrap风格
        feedbackIcons: {
            valid: 'glyphicon glyphicon-ok',
            invalid: 'glyphicon glyphicon-remove',
            validating: 'glyphicon glyphicon-refresh'
        },

        //3. 指定校验字段
        fields: {
            // 二级分类id 
            brandId: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请选择二级分类'
                    }
                }
            },
            // 商品名称
            proName: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品名称'
                    }
                }
            },
            // 商品描述
            proDesc: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品描述'
                    }
                }
            },
            // 商品库存
            num: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品库存'
                    },
                    //正则校验
                    regexp: {
                        regexp: /^[1-9]\d*$/,  // 2
                        message: '库存必须是非0开头的数字'
                    }
                }
            },
            // 商品尺寸
            size: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品尺寸'
                    },
                    //正则校验
                    regexp: {
                        regexp: /^[1-9]\d-[1-9]\d$/,  // 
                        message: '尺码必须是xx-xx格式， x是数字'
                    }
                }
            },
            // 商品原价
            oldPrice: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品原价'
                    }
                }
            },
            // 商品现价
            price: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请输入商品现价'
                    }
                }
            },
            // 图片
            picArr: {
                validators: {
                    //不能为空
                    notEmpty: {
                        message: '请上传3张图片'
                    }
                }
            }
        }

    });

    // 7- 恢复下拉列表，和图片状态
    // 1- 下拉列表选中，恢复下拉列表状态 
    // 2- 图片够3张后， 恢复图片的校验状态 

    // 8-正则校验 ：尺码和库存   原价 现价
    // 尺码：尺码格式必须为： xx-xx , x是数字
    // 库存：商品库存格式, 必须是非零开头的数字

    // 9-添加商品
    // 1- 点击添加按钮，在表单数据合理的情况下，发送请求给后台，进行添加
    // 2- 添加完成后，页面重新渲染，隐藏模态框， 表单重置, 
    // 3- 手动恢复图片和按钮样式
    $('.add-form').on('success.form.bv', function (e) {
        e.preventDefault(); //阻止默认行为 
        // 发送请求
        $.ajax({
            type: 'post',
            url: '/product/addProduct',
            data: $('.add-form').serialize(),
            dataType: 'json',
            success: function (res) {
                console.log(res);
                // 页面重新渲染，
                render();
                // 隐藏模态框，
                $('.modal-add').modal('hide');
                // 表单重置
                $('.add-form').data('bootstrapValidator').resetForm(true);
                // 手动恢复图片和按钮样式
                $('.cate-span').text('请选择二级分类');
                $('.img-box').empty(); //清空内部的图片 
                // 重置picArr属性 (吃完饭要洗碗)
                picArr = [];

            }
        })
    })


})  